Zone Info (Reservoir Info)

Petrolib also allows you to read in your picked well tops. Using the Zonation class, you can extract information about the reservoir tops and bases, and their names

In [2]:
# Importing the load_las function from the petrolib.file_reader module
from petrolib.file_reader import load_las

# Loading data from the LAS file 'ATAGA 11.las' using the load_las function from the petrolib.file_reader module,
# specifying to return a DataFrame (well_df) and ignoring the LAS object (using '_' as a placeholder),
# and selecting specific log curves ('GR', 'ILD', 'RHOB', 'NPHI')
well_df, _ = load_las('ATAGA 11.las', return_csv=True, curves=['GR', 'ILD', 'RHOB', 'NPHI'])

# Resetting the index of the DataFrame
well_df = well_df.reset_index()

# Displaying the first few lines of the DataFrame
well_df.head()
Out[2]:
DEPT:1 GR ILD RHOB NPHI
0 1192.3776 18.624901 NaN NaN NaN
1 1192.5300 18.484600 NaN NaN NaN
2 1192.6824 18.877001 NaN NaN NaN
3 1192.8348 21.032200 NaN NaN NaN
4 1192.9872 22.497999 NaN NaN NaN

Load zonation info

In [5]:
# Importing the Zonation class from the petrolib.plots module
from petrolib.plots import Zonation

# Creating an instance of the Zonation class with parameters specifying DataFrame(well_df) and path to tops file('ataga 11.csv')
well11tops = Zonation(well_df, path='ataga 11.csv')

# Displaying the zonation information using the instance of the Zonation class
well11tops
Out[5]:
<petrolib.plots.Zonation at 0x7f3d661c81f0>
In [10]:
# Extracting well information by calling the Zonation object
ztop, zbot, zn, fm = well11tops()

# Iterating over zonation information and printing details for each reservoir
for t, b, n, f in zip(ztop, zbot, zn, fm):
    print(f'For RESERVOIR {n}: the top depth={t} and the bottom depth={b}')
For RESERVOIR A3: the top depth=3176.37 and the bottom depth=3243.8
For RESERVOIR A4: the top depth=3268.09 and the bottom depth=3305.87
For RESERVOIR A5: the top depth=3381.49 and the bottom depth=3409.87
For RESERVOIR A6: the top depth=3500.44 and the bottom depth=3519.37
For RESERVOIR A7: the top depth=3554.56 and the bottom depth=3706.26
For RESERVOIR A8: the top depth=3836.44 and the bottom depth=3904.23
For RESERVOIR A9: the top depth=3940.82 and the bottom depth=3981.45
For RESERVOIR A10: the top depth=4053.22 and the bottom depth=4074.87
For RESERVOIR A11: the top depth=4211.51 and the bottom depth=4231.79
For RESERVOIR A12: the top depth=4284.53 and the bottom depth=4310.21
For RESERVOIR A13: the top depth=4399.43 and the bottom depth=4418.35
In [16]:
# Plotting the zone information by calling the plotZone method on the Zonation object,
# specifying the depth axis ('DEPT:1'), log curves to plot (['GR', 'ILD', 'RHOB', 'NPHI']),
# minimum top depth (min(ztop)), maximum bottom depth (max(zbot)), and figure size (12, 30)
well11tops.plotZone('DEPT:1', ['GR', 'ILD', 'RHOB', 'NPHI'], min(ztop), max(zbot), figsize=(12, 30))